#include "MainWidget.h"
#include <QHBoxLayout>
#include <QLabel>
#include <QLineEdit>
#include <QTimer>
#include "../Model/DataCenter.h"
#include "Debug.h"
#include "GroupSessionDetailDialog.h"
#include "MessageEditArea.h"
#include "MessageShowArea.h"
#include "Model/Data.h"
#include "SearchDialog.h"
#include "SelfInfoDialog.h"
#include "SessionDetailDialog.h"
#include "SessionFriendApplyArea.h"
#include "Toast.h"
#include "ui_MainWidget.h"

using namespace model;
MainWidget* MainWidget::instance = nullptr;

MainWidget* MainWidget::get_instance()
{
    if (instance == nullptr) {
        instance = new MainWidget();
    }
    return instance;
}

/// @brief 获取会话最近消息, SessionItem 的 active() 方法调用该函数
void MainWidget::load_recent_messages(const QString& chat_session_id)
{
    /* 本地有数据就直接获取 */
    QList<Message>* message_list = data_center->get_message_list(chat_session_id);
    if (message_list != nullptr) {
        update_recent_messages(chat_session_id);
        return;
    }
    /* 本地没有数据就通过网络获取服务器中的数据 */
    connect(data_center, &DataCenter::get_recent_messages_done, this, &MainWidget::update_recent_messages, Qt::UniqueConnection);
    data_center->get_recent_messages_async(chat_session_id, 50, true);  // 获取50条最近消息
}

/// @brief 处理 FriendItem 的  active() 方法
///        UserInfoDialog 中如果点击发送按钮也会调用这个方法
void MainWidget::handle_friend_item_active(const QString& user_id)
{
    static bool in_progress = false;  // 防止重入
    if (in_progress) {
        LOG() << "handle_friend_item_active already in progress, skipping";
        return;
    }
    in_progress = true;
    /* 找到对应的会话 */
    ChatSession* session = data_center->get_chat_session_by_user_id(user_id);
    if (session == nullptr) {
        LOG() << "session not exists! user_id: " << user_id;
        in_progress = false;
        return;
    }
    /* 把这个会话置顶 */
    int res = data_center->top_this_session(session);
    if (res < 0) {
        LOG() << "failed to top session, user_id" << user_id << "res: " << res;
        in_progress = false;
        return;
    }
    /* 切换到这个标签页, 即更换左侧按钮颜色 */
    switch_to_session_page();
    /* 点击这个会话, 加载消息内容 */
    s_f_a_area->click_item(0);
    in_progress = false;
}

/// @brief 获得消息展示区
MessageShowArea* MainWidget::get_message_show_area()
{
    return message_show_area;
}

MainWidget::MainWidget(QWidget* parent)
    : QWidget(parent)
    , ui(new Ui::MainWidget)
{
    ui->setupUi(this);
    this->setWindowTitle("聊天软件");
    this->setWindowIcon(QIcon(":/image/logo.png"));
    init_ui();
    connect_signal_slots();
}

MainWidget::~MainWidget()
{
    delete ui;
}

/// @brief 初始化界面
void MainWidget::init_ui()
{
    init_main_window();
    init_left_window();
    init_mid_window();
    init_right_window();
}

/// @brief 初始化主要的窗口, 创建3个QWidget
void MainWidget::init_main_window()
{
    /* 创建水平布局并添加QWidget */
    QHBoxLayout* layout = new QHBoxLayout(this);
    layout->setSpacing(0);
    layout->setContentsMargins(0, 0, 0, 0);
    left_window  = new QWidget();
    mid_window   = new QWidget();
    right_window = new QWidget();
    layout->addWidget(left_window);
    layout->addWidget(mid_window);
    layout->addWidget(right_window);
    /* 给 QWidget 设置样式 */
    left_window->setStyleSheet("QWidget{ background-color:#e5e5e5; border:none; }");
    mid_window->setStyleSheet("QWidget{ background-color:#ffffff; border:none; }");
    right_window->setStyleSheet("QWidget{ background-color:#f2f2f2; border:none; }");
    /* 设置 QWidget 的大小 */
    left_window->setFixedWidth(75);
    mid_window->setFixedWidth(300);
    right_window->setMinimumWidth(650);
    right_window->setMinimumHeight(650);
    /* 获取网络的data_center */
    data_center = DataCenter::get_instance();
    data_center->init_socket();
}

/// @brief 初始化左侧窗口, 显示文本, 头像和功能按钮
void MainWidget::init_left_window()
{
    /* 创建垂直布局 */
    QVBoxLayout* layout = new QVBoxLayout(left_window);
    layout->setSpacing(15);
    layout->setContentsMargins(0, 10, 0, 0);
    /* 添加标题文字 */
    QLabel* text = new QLabel("OO 9");
    QFont   font;
    font.setPixelSize(20);
    text->setFont(font);
    /* 初始化用户头像 */
    user_avatar = new CircleButton();
    user_avatar->setStyleSheet("background-color: transparent; border: none;");
    // user_avatar->setIcon(QIcon(":/image/defaultAvatar.png"));  // 从网络中获取头像
    user_avatar->setFixedSize(50, 50);
    user_avatar->setIconSize(QSize(50, 50));
    layout->addWidget(text, 1, Qt::AlignTop | Qt::AlignHCenter);  // 垂直方向向上居中, 水平方向居中
    layout->addWidget(user_avatar, 1, Qt::AlignTop | Qt::AlignHCenter);
    /* 初始化功能按钮 */
    session_btn     = new QPushButton();
    friend_btn      = new QPushButton();
    friend_aply_btn = new QPushButton();
    page_button_map = {
        {SESSION_PAGE, {session_btn, ":/image/session_active.png", ":/image/session_inactive.png"}},
        { FRIEND_PAGE,    {friend_btn, ":/image/friend_active.png", ":/image/friend_inactive.png"}},
        {  APPLY_PAGE, {friend_aply_btn, ":/image/apply_active.png", ":/image/apply_inactive.png"}}
    };  // 建立映射关系
    for (const auto& info : std::as_const(page_button_map)) {
        set_side_button(info.button, info.inactive_icon);
        layout->addWidget(info.button, 1, Qt::AlignTop | Qt::AlignHCenter);
    }  // 统一设置按钮样式
    /* 在末尾添加伸缩空间, 将上面的元素挤上去 */
    layout->addStretch(15);
    /* 默认显示第一个页面 */
    switch_to_session_page();
    load_friend_list();        // 加载好友列表
    load_friend_apply_list();  // 加载好友申请列表
}

/// @brief 初始化中间的窗口, 添加一个搜索框, 加号和n个会话
void MainWidget::init_mid_window()
{
    /* 设置布局 */
    QGridLayout* layout = new QGridLayout();
    layout->setContentsMargins(0, 10, 0, 0);
    layout->setVerticalSpacing(10);   // 垂直方向的间距
    layout->setHorizontalSpacing(0);  // 水平方向的间距
    mid_window->setLayout(layout);
    /* 设置输入框 */
    line_edit = new QLineEdit();
    line_edit->setFixedHeight(30);
    line_edit->setPlaceholderText("搜索");
    line_edit->setStyleSheet(
        "QLineEdit {"
        "border-radius: 5px; "
        "background-color: #f5f5f5; "
        "padding-left: 5px;"
        "} QLineEdit:focus {"
        "border: 1px solid #0099FF;"
        "}");
    /* 设置+号 */
    add_friend_btn = new QPushButton();
    add_friend_btn->setIconSize(QSize(20, 20));
    add_friend_btn->setIcon(QIcon(":/image/cross.png"));
    add_friend_btn->setFixedSize(QSize(30, 30));
    QString style =
        "QPushButton { border-radius: 5px; background-color:#f5f5f5;}"
        "QPushButton:hover{background-color:#EBEBEB;}"
        "QPushButton:pressed{background-color:#D7D7D7;}";
    add_friend_btn->setStyleSheet(style);
    /* set friend_session_apply area */
    s_f_a_area = new SessionFriendApplyArea();
    /* set blank widget to control the distance of line_edit and add num */
    QWidget* spacer_1 = new QWidget();
    QWidget* spacer_2 = new QWidget();
    QWidget* spacer_3 = new QWidget();
    spacer_1->setFixedWidth(10);
    spacer_2->setFixedWidth(10);
    spacer_3->setFixedWidth(10);
    layout->addWidget(spacer_1, 0, 0);
    layout->addWidget(line_edit, 0, 1);
    layout->addWidget(spacer_2, 0, 2);
    layout->addWidget(add_friend_btn, 0, 3);
    layout->addWidget(spacer_3, 0, 4);
    layout->addWidget(s_f_a_area, 1, 0, 1, 5);
}

/// @brief: 初始化右侧窗口
void MainWidget::init_right_window()
{
    /* 垂直方向布局 */
    QVBoxLayout* v_layout = new QVBoxLayout();
    v_layout->setContentsMargins(0, 0, 0, 0);
    v_layout->setSpacing(0);
    right_window->setLayout(v_layout);
    /* 1. 顶部的Label和PushButton */
    QWidget* title_wiget = new QWidget();
    title_wiget->setFixedHeight(50);
    v_layout->addWidget(title_wiget, Qt::AlignTop);  // 向上对齐
    title_wiget->setStyleSheet(
        "QWidget {"
        "border-left: 1px solid #e9e9e9;"
        "border-bottom: 1px solid #e9e9e9;"
        "}");  // 设置样式, 在左边和下边来一条细线
    QHBoxLayout* h_layout = new QHBoxLayout();
    h_layout->setContentsMargins(15, 0, 15, 0);
    h_layout->setSpacing(0);
    title_wiget->setLayout(h_layout);
    title = new QLabel();
#ifdef TEST_UI
    label->setText("测试标题...");
#endif
    title->setStyleSheet(
        "QLabel {"
        "font-size: 22px;"
        "}");
    more_btn = new QPushButton();
    more_btn->setFixedSize(35, 35);
    more_btn->setIconSize(QSize(35, 35));
    more_btn->setStyleSheet(
        "QPushButton {"
        "border: none;"
        "border-image:url(:/image/more.png);"
        "background-repeat: no-repeat;"
        "background-position: center center;"
        "}"
        "QPushButton:hover {"
        "border-image:url(:/image/more_active.png);"
        "}");
    h_layout->addWidget(title);
    h_layout->addWidget(more_btn);
    /* 2. 初始化中间的消息展示区域 */
    message_show_area = new MessageShowArea();
    v_layout->addWidget(message_show_area);
    /* 3. 初始化消息编辑区域 */
    MessageEditArea* message_edit_area = new MessageEditArea();
    v_layout->addWidget(message_edit_area);
#ifdef TEST_UI
    for (int i = 1; i <= 5; ++i) {
        model::UserInfo user;
        user.user_id       = QString::number(10000 + i);
        user.phone_num     = QString::number(18200000000 + i);
        user.nick_name     = "奈亚子ww" + QString::number(i);
        user.avatar        = QIcon(":/image/nyaruko.png");
        user.description   = "这是一段非常炸裂的个性签名" + QString::number(i) + "...";
        QByteArray content = ("测试文本测试文本测试文本测试文本测试文本测试文本测试文本测试文本测试文本测试文本测试文本测试文本测试文本测试文本测试文本测试文本测试文本测试文本测试文本测试文本测试文本测试文本测试文本测试文本测试文本测试文本测试文本测试文本测试文本测试文本测试文本测试文本测试文本测试文本测试文本测试文本" + QString::number(i)).toUtf8();
        auto       message = model::Message::make_message_object(model::TEXT_TYPE, "", user, content,
                                                                 "");
        message_show_area->add_message(message, true);
        message_show_area->add_message(message, false);
    }
#endif
}

/// @brief 连接信号槽
void MainWidget::connect_signal_slots()
{
    connect(session_btn, &QPushButton::clicked, this, &MainWidget::switch_to_session_page);
    connect(friend_btn, &QPushButton::clicked, this, &MainWidget::switch_to_friend_page);
    connect(friend_aply_btn, &QPushButton::clicked, this, &MainWidget::switch_to_friend_apply_page);
    connect(user_avatar, &QPushButton::clicked, this, [this]() {
        SelfInfoDialog* info_widget = new SelfInfoDialog(this);
        /*
         * 计算居中位置:
         * 1. 坐标系转换:
         *             主窗口的中心点是屏幕绝对坐标
         *             对话框的中心点是相对于自身的相对坐标
         *             相减操作实现了从相对坐标到绝对坐标的转换
         * 2. 居中本质:
         *            对话框居中 = 对话框中心点与主窗口中心点重合
         *            对话框左上角位置 = 主窗口中心点 - 对话框中心偏移
         */
        QPoint centerPos = this->geometry().center() - info_widget->rect().center();
        info_widget->move(centerPos);
        info_widget->exec();  // 模态对话框
    });
    connect(more_btn, &QPushButton::clicked, this, &MainWidget::handle_clicked_more_btn);
    connect(add_friend_btn, &QPushButton::clicked, this, [this]() {
        SearchDialog* search_dialog = new SearchDialog(this);
        QPoint        centerPos     = this->geometry().center() - search_dialog->rect().center();
        search_dialog->move(centerPos);
        search_dialog->exec();  // 模态对话框
    });
    connect(line_edit, &QLineEdit::textEdited, this, [this]() {
        /* 当输入框输入数据时，也弹出对话框 */
        SearchDialog* search_dialog = new SearchDialog(this);
        search_dialog->set_text(line_edit->text());
        line_edit->clear();
        QPoint centerPos = this->geometry().center() - search_dialog->rect().center();
        search_dialog->move(centerPos);
        search_dialog->exec();  // 模态对话框
    });
    connect_signal_for_web();   // 连接网络相关的信号槽
}

/// @brief 连接信号槽, 用于网络通信相关的功能(仅仅是部分, 其余比较复杂的封装了函数)
void MainWidget::connect_signal_for_web()
{
    /* 获取个人信息 */
    connect(data_center, &DataCenter::get_myself_info_done, [=] {
        UserInfo* user_info = data_center->get_cur_user_info();
        user_avatar->setIcon(user_info->avatar);
    });
    data_center->get_myself_info_async();
    /* 当个人头像被修改时 */
    connect(data_center, &DataCenter::set_cur_user_info_avatar_done, [=] {
        UserInfo* user_info = data_center->get_cur_user_info();
        user_avatar->setIcon(user_info->avatar);
    });
    /* 会被A端和B端同时处理del_friend_done信号, A---删除-->B */
    connect(data_center, &DataCenter::del_friend_done, [=] {
        update_friend_list();        // 重新加载好友列表
        update_chat_session_list();  // 重新加载会话列表
        Toast::showMessage("离别, 终会到来...");
        LOG() << "handle del_friend_done";
    });
    /* 由于删除好友会清空会话, 所以如果清空的会话是当前选中的会话, 要做如下操作 */
    connect(data_center, &DataCenter::del_cur_session, [=] {
        message_show_area->clear_message();
        title->setText("");
        LOG() << "handle del_cur_session";
    });
    /* 发送好友申请 */
    connect(data_center, &DataCenter::add_friend_done, [=] {
        Toast::showMessage("发送好友申请成功");
        LOG() << "handle add_friend_done";
    });
    /* 收到好友申请 */
    connect(data_center, &DataCenter::receive_friend_apply, [=] {
        Toast::showMessage("收到一条好友申请!");
        load_friend_apply_list();
        LOG() << "handle receive_friend_apply";
    });
    /* 同意好友申请响应 */
    connect(data_center, &DataCenter::accept_friend_apply_done, [=](const QString& nick_name) {
        update_friend_apply_list();
        update_friend_list();
        Toast::showMessage("同意了" + nick_name + "的好友申请");
    });
    /* 拒绝好友申请响应 */
    connect(data_center, &DataCenter::reject_friend_apply_done, [=](const QString& nick_name) {
        update_friend_apply_list();
        Toast::showMessage("拒绝了" + nick_name + "的好友申请");
    });
    /* 收到同意好友申请响应 */
    connect(data_center, &DataCenter::receive_accept_friend_apply, [=](const QString& nick_name) {
        update_friend_list();
        Toast::showMessage(nick_name + "同意了你的好友申请");
    });
    /* 收到拒绝好友申请响应 */
    connect(data_center, &DataCenter::receive_reject_friend_apply, [=](const QString& nick_name) {
        Toast::showMessage(nick_name + "拒绝了你的好友申请");
    });
    /* 发送创建群聊请求 */
    connect(data_center, &DataCenter::creat_group_done, []() {
        Toast::showMessage("创建群聊申请发送成功");
    });
    /* 收到创建群聊响应, 即别人把你拉到了某个群聊里 */
    connect(data_center, &DataCenter::receive_create_group, [=]() {
        update_chat_session_list();
        Toast::showMessage("你被拉入了一个群聊");
    });
}

/// @brief 切换到会话页面
void MainWidget::switch_to_session_page()
{
    switch_to_page(SESSION_PAGE);
    load_chat_session_list();  // 加载会话列表
}

/// @brief 切换到朋友页面
void MainWidget::switch_to_friend_page()
{
    switch_to_page(FRIEND_PAGE);
    load_friend_list();  // 加载好友列表
}

/// @brief 切换到朋友申请页面
void MainWidget::switch_to_friend_apply_page()
{
    switch_to_page(APPLY_PAGE);
    load_friend_apply_list();  // 加载好友申请列表
}

/// @brief 切换到 page 页面, 更改按钮的状态
void MainWidget::switch_to_page(ActivePage page)
{
    active_page = page;
    /* 重置所有按钮状态(设置为非激活状态) */
    for (const auto& info : std::as_const(page_button_map)) {
        info.button->setIcon(QIcon(info.inactive_icon));
        info.button->setStyleSheet(INACTIVE_STYLE);
    }
    /* 设置其中一个按钮的状态 */
    PageButtonInfo& current = page_button_map[page];
    current.button->setIcon(QIcon(current.active_icon));
    current.button->setStyleSheet(ACTIVE_STYLE);
}

/// @brief 处理点击更多按钮, 可能弹出群聊界面, 也可能弹出群聊界面
void MainWidget::handle_clicked_more_btn()
{
    QString cur_session_id = data_center->get_cur_session_id();
    if (cur_session_id == "") {
        LOG() << "当前未选中任何会话!";
        Toast::showMessage("当前未选中任何会话!");
        return;
    }
    ChatSession* session = data_center->get_chat_session(cur_session_id);
    if (session == nullptr)
        return;
    if (session->user_id == "") {
        /* 群聊 */
        ChatSession* cur_session = data_center->get_chat_session(cur_session_id);
        //GroupSessionDetailDialog* detail_widget = new GroupSessionDetailDialog(
        //    this, QIcon(":/image/defaultAvatar.png"), "1000123", "这是小莫提斯, 我才是睦子米");
        auto detail_widget = new GroupSessionDetailDialog(this, cur_session->avatar, 
            cur_session->chat_session_id, 
            cur_session->chat_session_name);
        QPoint centerPos = this->geometry().center() - detail_widget->rect().center();
        detail_widget->move(centerPos);
        detail_widget->exec();  // 模态对话框
    } else {
        /* 单聊 */
        UserInfo*            user_info     = data_center->get_user_info_by_user_id(session->user_id);
        SessionDetailDialog* detail_widget = new SessionDetailDialog(user_info, nullptr);
        QPoint               centerPos     = this->geometry().center() - detail_widget->rect().center();
        detail_widget->move(centerPos);
        detail_widget->exec();  // 模态对话框
    }
}

/// @brief 设置左边的按钮的属性的函数
void MainWidget::set_side_button(QPushButton* btn, const QString& icon, int size)
{
    btn->setIcon(QIcon(icon));
    btn->setFixedSize(size, size);
    btn->setIconSize(QSize(size - 10, size - 10));
    btn->setStyleSheet(INACTIVE_STYLE);
}

/// @brief 加载好友列表
void MainWidget::load_friend_list()
{
    /* 如果好友列表有数据, 就直接拿 */
    if (data_center->get_friend_list() != nullptr) {
        update_friend_list();
        return;
    }
    /* 没有数据就从网络中获取 */
    connect(data_center, &DataCenter::get_friend_list_done,
            this, &MainWidget::update_friend_list, Qt::UniqueConnection);
    data_center->get_friend_list_async();
}

/// @brief 从DataCenter中的 friend_list 更新界面上的好友列表
///         load_friend_list()使用这个函数
void MainWidget::update_friend_list()
{
    if (active_page != FRIEND_PAGE) {
        /* 不是好友列表, 不需要更新 */
        return;
    }
    s_f_a_area->clear_item();  // 清空当前的好友列表
    auto user_list = data_center->get_friend_list();
    for (const auto& user : *user_list) {
        s_f_a_area->add_item(
            ItemType::FRIEND_TYPE, user.user_id, user.avatar, user.nick_name,
            user.description);
    }
}

/// @brief 加载会话列表
void MainWidget::load_chat_session_list()
{
    /* 如果会话列表有数据, 就直接拿 */
    if (data_center->get_chat_session_list() != nullptr) {
        update_chat_session_list();
        return;
    }
    /* 没有数据就从网络中获取 */
    connect(data_center, &DataCenter::get_chat_session_list_done,
            this, &MainWidget::update_chat_session_list, Qt::UniqueConnection);
    data_center->get_chat_session_list_async();
}

/// @brief 从DataCenter中的 chat_session_list 更新界面上的好友列表
///         load_friend_list()使用这个函数
void MainWidget::update_chat_session_list()
{
    if (active_page != SESSION_PAGE) {
        /* 不是会话列表, 不需要更新 */
        return;
    }
    s_f_a_area->clear_item();  // 清空当前的会话列表
    auto user_list = data_center->get_chat_session_list();
    for (const auto& chat_session : *user_list) {
        switch (chat_session.prev_messsage.message_type) {
        case TEXT_TYPE:
            s_f_a_area->add_item(
                ItemType::SESSION_TYPE, chat_session.chat_session_id,
                chat_session.avatar, chat_session.chat_session_name,
                QString(chat_session.prev_messsage.content));
            break;
        case IMAGE_TYPE:
            s_f_a_area->add_item(
                ItemType::SESSION_TYPE, chat_session.chat_session_id,
                chat_session.avatar, chat_session.chat_session_name,
                "[图片]");
            break;
        case SPEECH_TYPE:
            s_f_a_area->add_item(
                ItemType::SESSION_TYPE, chat_session.chat_session_id,
                chat_session.avatar, chat_session.chat_session_name,
                "[语音]");
            break;
        case FILE_TYPE:
            s_f_a_area->add_item(
                ItemType::SESSION_TYPE, chat_session.chat_session_id,
                chat_session.avatar, chat_session.chat_session_name,
                "[文件]");
        default:
            LOG() << "Unknow Type: " << chat_session.prev_messsage.message_type;
            break;
        }
    }
}

/// @brief 加载好友申请列表
void MainWidget::load_friend_apply_list()
{
    /* 如果好有列表有数据, 就直接拿 */
    if (data_center->get_friend_apply_list() != nullptr) {
        update_friend_apply_list();
        return;
    }
    /* 没有数据就从网络中获取 */
    connect(data_center, &DataCenter::get_friend_apply_list_done,
            this, &MainWidget::update_friend_apply_list, Qt::UniqueConnection);
    data_center->get_friend_apply_list_async();
}

/// @brief 从DataCenter中的 chat_session_list 更新界面上的好友列表
///         load_friend_apply_list()使用这个函数
void MainWidget::update_friend_apply_list()
{
    if (active_page != APPLY_PAGE) {
        /* 不是好友申请页面, 不需要更新 */
        return;
    }
    s_f_a_area->clear_item();  // 清空当前的好友申请列表
    auto apply_list = data_center->get_friend_apply_list();
    for (const auto& apply : *apply_list) {
        s_f_a_area->add_item(
            ItemType::APPLY_TYPE, apply.user_id, apply.avatar, apply.nick_name,
            apply.description);
    }
}

/// @brief 从DataCenter中的 message_list 更新这个会话id的消息内容到右侧窗口
///         load_recent_message()使用这个函数
void MainWidget::update_recent_messages(const QString& chat_session_id)
{
    QList<Message>* messages = data_center->get_message_list(chat_session_id);
    message_show_area->clear_message();
    /* 新的消息在list最后面, 所以说这里尾插完全没问题 */
    for (const auto& m : *messages) {
        // LOG() << "sender.user_id: " << m.sender.user_id << " data_center->get_cur_user_info()->user_id: "
        //     << data_center->get_cur_user_info()->user_id;
        if (m.sender.user_id == data_center->get_cur_user_info()->user_id) {
            /* 如果是自己的消息, 就在右边 */
            message_show_area->add_message(m, false);
        } else {
            /* 别人的消息在左边 */
            message_show_area->add_message(m, true);
        }
    }
    /* 设置标题 */
    ChatSession* session_info = data_center->get_chat_session(chat_session_id);
    if (session_info == nullptr) {
        LOG() << "session_info is nullptr, chat_session_id: " << chat_session_id;
    } else {
        title->setText(session_info->chat_session_name);
    }
    /* 设置当前选中的会话id */
    data_center->set_cur_session_id(chat_session_id);
}
